package com.filldream.sun.exception;

import com.filldream.sun.bean.result.ErrorCode;

public class GlobalException extends  RuntimeException{

    private static final long serialVersionUID = -238091758285157331L;
    private ErrorCode errorCode;

    public GlobalException(Exception e) {
        super(e);
    }

    public GlobalException(ErrorCode errorCode, String msg) {
        super(errorCode.getCode() + ":" + msg);
        errorCode.setMsg(msg);
        this.errorCode = errorCode;
    }

    /**
     * 系统默认报错
     * @param errorCode
     */
    public GlobalException(ErrorCode errorCode) {
        super(errorCode.getCode() + ":" + errorCode.getMsg());
        this.errorCode = errorCode;
    }

    /**
     * 方法错误，自定义错误信息
     * @param msg
     */
    public GlobalException(String msg) {
        super(ErrorCode.METHOD_ERR + ":" + msg);
        ErrorCode err = ErrorCode.METHOD_ERR;
        err.setMsg(msg);
        this.errorCode = err;
    }


    /**
     *  已知错误类型，抛出异常
     * @param errorCode
     * @param e
     */
    public GlobalException(ErrorCode errorCode, Exception e) {
        super(errorCode.getCode() + ":" + errorCode.getMsg(),e);
        this.errorCode = errorCode;
    }

    public ErrorCode getErrorCode() {
        return errorCode;
    }

    @Override
    public String toString() {
        return this.errorCode.getMsg();
    }

    public static long getSerialVersionUID() {
        return serialVersionUID;
    }

    public void setErrorCode(ErrorCode errorCode) {
        this.errorCode = errorCode;
    }
}